package com.ymatou.iapi.trading.sellerquery2.parameter.resp;

import java.math.BigDecimal;
import java.util.List;

import com.ymatou.iapi.trading.ordersync.parameter.ProductPromotion;
import com.ymttest.common.enums.OrderInfoTypeEnum;
import com.ymttest.common.enums.SalesTypeStringEnum;
import com.ymttest.common.order.userquery.util.Utils;

public class OrderItemInfo {

	/**
	* 是否护航直邮
	*/
	private boolean sailProtected;

	/**
	 * 价格
	 */
	private BigDecimal price = BigDecimal.ZERO;

	/**
	 * 订单项相关属性组合信息
	 */
	private String propertyInfo;

	/**
	 * 商品个数
	 */
	private int amount;

	/**
	 * 订单项类型
	 *
	 * @see OrderInfoTypeEnum
	 */
	private int itemType;

	/**
	 * 商品规格id
	 */
	private String catalogId;

	/**
	 * 商品id
	 */
	private String productId;

	/**
	 * 订单项描述
	 */
	private String description;

	/**
	 * 订单项Id
	 */
	private String orderItemId;

	/**
	 * 商品图片url
	 */
	private String pictureUrl;

	/**
	 * 商品详情链接url
	 */
	private String referenceUrl;

	/**
	 * 商品标题
	 */
	private String title;

	/**
	 * 商品一级类目
	 */
	private int firstCategoryId;

	/**
	 * 商品二级类目
	 */
	private int subProductCategoryId;

	/**
	 * 商品三级类目
	 */
	private int thirdCategoryId;

	/**
	 * 物流类型
	 *
	 * @see LogisticsTypeEnum
	 */
	private int logisticsType;

	/**
	 * 备货状态
	 *
	 * @see StockStatusEnum
	 */
	private int stockStatus;

	/**
	 * 新人价补贴
	 */
	private BigDecimal premium = BigDecimal.ZERO;

	/**
	 * 商品sku
	 */
	private String sku;

	/**
	 * 是否算入成本（专门用于财务核算）
	 */
	private boolean isCost;

	/**
	 * 区分新客价或者VIP价
	 *
	 * @see PriceTypeEnum
	 */
	private int priceType;

	/**
	 * 保税区
	 *
	 * @see BondedAreaEnum
	 */
	private int bondedArea;

	/**
	 * 退货方式(官方、非官方)
	 *
	 * @see ProductRefundChannelEnum
	 */
	private int productRefundChannel;

	/**
	 * 订单商品对应的活动信息
	 */
	private OrderItemInfoExt orderItemInfoExt;

	/**
	 * 平摊商家优惠券金额
	 */
	private BigDecimal sellerCouponAmount;

	/**
	 * 平摊码头平台优惠券金额
	 */
	private BigDecimal ymtCouponAmount;

	/**
	 * 平摊调整金额
	 */
	private BigDecimal discount;

	/**
	 * 运费商品分摊金额
	 */
	private BigDecimal freight;

	/**
	 * 商品成交价
	 */
	private BigDecimal productPrice;

	/**
	 * 商品退款单号
	 */
	private String refundBillNo;

	/**
	 * 申请成功或申请中退款运费金额
	 */
	private BigDecimal refundFreight = BigDecimal.ZERO;

	/**
	 * 申请成功退款运费金额
	 */
	private BigDecimal refundApproveFreight = BigDecimal.ZERO;
	/**
	 * 商品原价
	 */
	private BigDecimal productOriginalPrice;

	/**
	 * 关税承担类型(0-卖家承担1-买家承担)
	 */
	private int tariffType;

	/**
	 * 销售类型
	 * .net端 兼容 java式枚举
	 *
	 * @see SalesTypeStringEnum
	 */
	private String salesType;

	/**
	 * 商品优惠信息
	 */
	private ProductPromotion promotion;

	/**
	 * 是否支持7天无条件退款
	 */
	private boolean supportRtnWithoutReason;

	/**
	 * 是否为免运费标识
	 */
	private Boolean freightFree;

	/**
	 * 是否预售商品
	 */
	private boolean preSale;

	/**
	 * 第三方优惠金额
	 */
	private BigDecimal thirdPartyDiscount = BigDecimal.ZERO;

	/**
	 * 商品快照
	 */
	private String productVer;

	/**
	 * 是否PSP商品
	 */
	private boolean pspProduct;

	/**
	 * 组合商品
	 */
	private List<SubProductInfo> subProductInfos;

	public boolean isSailProtected() {
		return sailProtected;
	}

	public void setSailProtected(boolean sailProtected) {
		this.sailProtected = sailProtected;
	}

	public BigDecimal getPrice() {
		return price;
	}

	public void setPrice(BigDecimal price) {
		this.price = Utils.zeroIfNull(price);
	}

	public String getPropertyInfo() {
		return propertyInfo;
	}

	public void setPropertyInfo(String propertyInfo) {
		this.propertyInfo = propertyInfo;
	}

	public int getAmount() {
		return amount;
	}

	public void setAmount(int amount) {
		this.amount = amount;
	}

	public int getItemType() {
		return itemType;
	}

	public void setItemType(int itemType) {
		this.itemType = itemType;
	}

	public String getCatalogId() {
		return catalogId;
	}

	public void setCatalogId(String catalogId) {
		this.catalogId = catalogId;
	}

	public String getProductId() {
		return productId;
	}

	public void setProductId(String productId) {
		this.productId = productId;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public String getOrderItemId() {
		return orderItemId;
	}

	public void setOrderItemId(String orderItemId) {
		this.orderItemId = orderItemId;
	}

	public String getPictureUrl() {
		return pictureUrl;
	}

	public void setPictureUrl(String pictureUrl) {
		this.pictureUrl = pictureUrl;
	}

	public String getReferenceUrl() {
		return referenceUrl;
	}

	public void setReferenceUrl(String referenceUrl) {
		this.referenceUrl = referenceUrl;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getLogisticsType() {
		return logisticsType;
	}

	public void setLogisticsType(int logisticsType) {
		this.logisticsType = logisticsType;
	}

	public int getStockStatus() {
		return stockStatus;
	}

	public void setStockStatus(int stockStatus) {
		this.stockStatus = stockStatus;
	}

	public BigDecimal getPremium() {
		return premium;
	}

	public void setPremium(BigDecimal premium) {
		this.premium = Utils.zeroIfNull(premium);
	}

	public String getSku() {
		return sku;
	}

	public void setSku(String sku) {
		this.sku = sku;
	}

	public boolean isCost() {
		return isCost;
	}

	public void setCost(boolean cost) {
		isCost = cost;
	}

	public int getPriceType() {
		return priceType;
	}

	public void setPriceType(int priceType) {
		this.priceType = priceType;
	}

	public int getBondedArea() {
		return bondedArea;
	}

	public void setBondedArea(int bondedArea) {
		this.bondedArea = bondedArea;
	}

	public int getProductRefundChannel() {
		return productRefundChannel;
	}

	public void setProductRefundChannel(int productRefundChannel) {
		this.productRefundChannel = productRefundChannel;
	}

	public OrderItemInfoExt getOrderItemInfoExt() {
		return orderItemInfoExt;
	}

	public void setOrderItemInfoExt(OrderItemInfoExt orderItemInfoExt) {
		this.orderItemInfoExt = orderItemInfoExt;
	}

	public BigDecimal getSellerCouponAmount() {
		return sellerCouponAmount;
	}

	public void setSellerCouponAmount(BigDecimal sellerCouponAmount) {
		this.sellerCouponAmount = sellerCouponAmount;
	}

	public BigDecimal getYmtCouponAmount() {
		return ymtCouponAmount;
	}

	public void setYmtCouponAmount(BigDecimal ymtCouponAmount) {
		this.ymtCouponAmount = ymtCouponAmount;
	}

	public BigDecimal getDiscount() {
		return discount;
	}

	public void setDiscount(BigDecimal discount) {
		this.discount = discount;
	}

	public BigDecimal getFreight() {
		return freight;
	}

	public void setFreight(BigDecimal freight) {
		this.freight = freight;
	}

	public BigDecimal getProductPrice() {
		return productPrice;
	}

	public void setProductPrice(BigDecimal productPrice) {
		this.productPrice = productPrice;
	}

	public String getRefundBillNo() {
		return refundBillNo;
	}

	public void setRefundBillNo(String refundBillNo) {
		this.refundBillNo = refundBillNo;
	}

	public BigDecimal getRefundFreight() {
		return refundFreight;
	}

	public void setRefundFreight(BigDecimal refundFreight) {
		this.refundFreight = refundFreight;
	}

	public BigDecimal getRefundApproveFreight() {
		return refundApproveFreight;
	}

	public void setRefundApproveFreight(BigDecimal refundApproveFreight) {
		this.refundApproveFreight = refundApproveFreight;
	}

	public BigDecimal getProductOriginalPrice() {
		return productOriginalPrice;
	}

	public void setProductOriginalPrice(BigDecimal productOriginalPrice) {
		this.productOriginalPrice = productOriginalPrice;
	}

	public int getTariffType() {
		return tariffType;
	}

	public void setTariffType(int tariffType) {
		this.tariffType = tariffType;
	}

	public String getSalesType() {
		return salesType;
	}

	public void setSalesType(String salesType) {
		this.salesType = salesType;
	}

	public ProductPromotion getPromotion() {
		return promotion;
	}

	public void setPromotion(ProductPromotion promotion) {
		this.promotion = promotion;
	}

	public boolean isSupportRtnWithoutReason() {
		return supportRtnWithoutReason;
	}

	public void setSupportRtnWithoutReason(boolean supportRtnWithoutReason) {
		this.supportRtnWithoutReason = supportRtnWithoutReason;
	}

	public Boolean getFreightFree() {
		return freightFree;
	}

	public void setFreightFree(Boolean freightFree) {
		this.freightFree = freightFree;
	}

	public boolean isPreSale() {
		return preSale;
	}

	public void setPreSale(boolean preSale) {
		this.preSale = preSale;
	}

	public BigDecimal getThirdPartyDiscount() {
		return thirdPartyDiscount;
	}

	public void setThirdPartyDiscount(BigDecimal thirdPartyDiscount) {
		this.thirdPartyDiscount = Utils.zeroIfNull(thirdPartyDiscount);
	}

	public String getProductVer() {
		return productVer;
	}

	public void setProductVer(String productVer) {
		this.productVer = productVer;
	}

	public boolean isPspProduct() {
		return pspProduct;
	}

	public void setPspProduct(boolean pspProduct) {
		this.pspProduct = pspProduct;
	}

	public List<SubProductInfo> getSubProductInfos() {
		return subProductInfos;
	}

	public void setSubProductInfos(List<SubProductInfo> subProductInfos) {
		this.subProductInfos = subProductInfos;
	}

	public int getFirstCategoryId() {
		return firstCategoryId;
	}

	public void setFirstCategoryId(int firstCategoryId) {
		this.firstCategoryId = firstCategoryId;
	}

	public int getSubProductCategoryId() {
		return subProductCategoryId;
	}

	public void setSubProductCategoryId(int subProductCategoryId) {
		this.subProductCategoryId = subProductCategoryId;
	}

	public int getThirdCategoryId() {
		return thirdCategoryId;
	}

	public void setThirdCategoryId(int thirdCategoryId) {
		this.thirdCategoryId = thirdCategoryId;
	}
}